<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>D/T/JK/RS триггеры</title>
</head>

<body bgcolor="FFFFFF">

<h1><img align="center" height="32" width="32" src="../../../icons/dFlipFlop.gif">
<img align="center" height="32" width="32" src="../../../icons/tFlipFlop.gif">
<img align="center" height="32" width="32" src="../../../icons/jkFlipFlop.gif">
<img align="center" height="32" width="32" src="../../../icons/srFlipFlop.gif">
<em>D/T/JK/RS триггеры</em></h1>

<p><table>
<tr><td><strong>Библиотека:</strong></td>
	<td><a href="index.html">Память</a></td></tr>
<tr><td><strong>Введён в:</strong></td>
	<td>2.0 Beta 1</td></tr>
<tr><td valign="top"><strong>Внешний вид:</strong></td>
	<td valign="top"><img src="../../../img-libs/flipflops.png"></td></tr>
</table></p>

<h2>Поведение</h2>

<p>Каждый триггер хранит один бит данных, который выдаётся на выход <var>Q</var> на восточном крае. В нормальном состоянии значением можно управлять через входы на западном крае. В частности, значение меняется, когда значение на <strong>тактовом</strong> входе, отмеченном треугольником на каждом триггере, меняется с 0 на 1 (или наоборот, если так настроено); в момент этого перехода значение меняется в соответствии с таблицей ниже.</p>

<center><table>
<tr><th>D-триггер</th>
    <th>T-триггер</th>
    <th>JK-триггер</th>
    <th>RS-триггер</th></tr>
<tr><td align="center" valign="top">
<table>
<tr><th><var>D</var></th><th><var>Q</var></th></tr>
<tr><td align="center">0</td><td align="center">0</td></tr>
<tr><td align="center">1</td><td align="center">1</td></tr>
</table>
</td><td align="center" valign="top">
<table>
<tr><th><var>T</var></th><th><var>Q</var></th></tr>
<tr><td align="center">0</td><td align="center"><var>Q</var></td></tr>
<tr><td align="center">1</td><td align="center"><var>Q</var>'</td></tr>
</table>
</td><td align="center" valign="top">
<table>
<tr><th><var>J</var></th><th><var>K</var></th><th><var>Q</var></th></tr>
<tr><td align="center">0</td><td align="center">0</td>
  <td align="center"><var>Q</var></td></tr>
<tr><td align="center">0</td><td align="center">1</td>
  <td align="center">0</td></tr>
<tr><td align="center">1</td><td align="center">0</td>
  <td align="center">1</td></tr>
<tr><td align="center">1</td><td align="center">1</td>
  <td align="center"><var>Q</var>'</td></tr>
</table>
</td><td align="center" valign="top">
<table>
<tr><th><var>S</var></th><th><var>R</var></th><th><var>Q</var></th></tr>
<tr><td align="center">0</td><td align="center">0</td>
  <td align="center"><var>Q</var></td></tr>
<tr><td align="center">0</td><td align="center">1</td>
  <td align="center">0</td></tr>
<tr><td align="center">1</td><td align="center">0</td>
  <td align="center">1</td></tr>
<tr><td align="center">1</td><td align="center">1</td>
  <td align="center"><em>??</em></td></tr>
</table>
</td></tr></table></center>

<p>Другой способ описания поведения различных триггеров - обычный текст.</p>
<ul>

<li><p><strong>D-триггер:</strong> когда тактовый вход срабатывает, значение, хранящееся в триггере, мгновенно становится значением входа <var>D</var> (<em>Данные</em>).</p></li>

<li><p><strong>T-триггер:</strong> когда тактовый вход срабатывает, значение, хранящееся в триггере, меняется или остаётся прежним в зависимости от того, какое значение на входе <var>T</var> (<em>Переключение</em>): 1 или 0.</p></li>

<li><p><strong>JK-триггер:</strong> когда тактовый вход срабатывает, значение, хранящееся в триггере, меняется, если на входах <var>J</var> и <var>K</var> единица; остаётся прежним, если на них 0; если значения на них различны, то значение становится единицей, если на входе <var>J</var> (<em>Прыжок</em>) - 1; или нулём, если на входе <var>K</var> (<em>Забой</em>) - 1.</p></li>

<li><p><strong>RS-триггер:</strong> когда тактовый вход срабатывает, значение, хранящееся в триггере, остаётся неизменным, если на входах <var>R</var> и <var>S</var> - 0; становится 0, если на входе <var>R</var> (<em>Сброс</em>) - 1, и становится 1, если на входе <var>S</var> (<em>Установка</em>) - 1. Поведение не определено, если на обоих входах 1. (В Logisim значение триггера остается неизменным.)</p></li>

</ul>

<p>По умолчанию тактовый вход срабатывает при переднем фронте - то есть когда значение на тактовом входе меняется с 0 на 1. Впрочем, атрибут Срабатывание позволяет сменить это на задний фронт (когда значение на тактовом входе меняется с 1 на 0), на Высокий уровень (срабатывать непрерывно на протяжении времени, когда на тактовом входе 1), или на Низкий уровень (срабатывать непрерывно на протяжении времени 0). Варианты "Высокий уровень" и "Низкий уровень" недоступны для T и JK триггеров, так как триггер ведет себя непредсказуемо, если заставить его переключаться непрерывно на протяжении отрезка времени.</p>

<h2>Контакты</h2>

<dl>

<dt>Западный край, отмечен треугольником (вход, разрядность равна 1)</dt>
<dd>Тактовый вход: в момент, когда значение на этом входе меняется с 0 на 1 (передний фронт), значение триггера будет обновлено в соответствии с другими входами на западном крае. Пока значение на этом входе остаётся 0 или 1, другие входы на западном крае не имеют эффекта.</dd>

<dt>Западный край, другой отмеченный контакт(ы) (вход(ы), разрядность равна 1)</dt>
<dd>Эти входы управляют тем, как значение триггера меняется в момент срабатывания тактового входа. Их точное поведение зависит от триггера; приведенная выше таблица описывает его.</dd>

<dt>Восточный край, отмечен <var>Q</var>, северный контакт (выход, разрядность равна 1)</dt>
<dd>Выдаёт значение, хранящееся в данный момент в триггере.</dd>

<dt>Восточный край, южный контакт (выход, разрядность равна 1)</dt>
<dd>Выдаёт дополнение для значения, хранящегося в данный момент в триггере.</dd>

<dt>Южный край, восточный контакт (вход, разрядность равна 1)</dt>
<dd>Асинхронный сброс: если на этом входе 0 или неопределённое значение, то он не имеет эффекта. Пока на нём 1, значение триггера фиксировано на 0. Это происходит асинхронно - то есть вне зависимости от текущего значения на тактовом входе. Пока на нём 1, другие входы не имеют эффекта.</dd>

<dt>Южный край, центральный контакт (вход, разрядность равна 1)</dt>
<dd>Включение: когда на этом входе 0, срабатывания тактового входа игнорируются. Текущий бит по-прежнему поступает на выход. Срабатывания тактового входа включаются, когда значение этого входа 1 или не определено.</dd>

<dt>Южный край, западный контакт (вход, разрядность равна 1)</dt>
<dd>Асинхронная установка: если на этом входе 0 или неопределённое значение, то он не имеет эффекта. Пока на нём 1, значение триггера фиксировано на 1. Это происходит асинхронно - то есть вне зависимости от текущего значения на тактовом входе. Пока на этом входе 1, другие входы не имеют эффекта, за исключением входа Асинхронный сброс - он имеет приоритет.</dd>

</dl>

<h2>Атрибуты</h2>

<dl>

<dt>Срабатывание</dt>
<dd>Определяет, как обрабатывается тактовый вход.  Значение <q>Передний фронт</q> означает, что триггер должен обновляться в момент, когда значение на тактовом входе меняется с 0 на 1. Значение <q>Задний фронт</q> означает, что он должен обновляться, когда значение на тактовом входе меняется с 1 на 0. Значение <q>Высокий уровень</q> означает, что триггер должен обновляться непрерывно, пока на тактовом входе 1. И значение <q>Низкий уровень</q> означает, что он должен обновляться непрерывно, пока на тактовом входе 0. Обратите внимание, что два последних варианта недоступны для T и JK триггеров.</dd>

<dt>Метка</dt>
<dd>Текст внутри метки, привязанной к триггеру.</dd>

<dt>Шрифт метки</dt>
<dd>Шрифт, которым отрисовывается метка.</dd>

</dl>

<h2>Поведение Инструмента Нажатие</h2>

<p>Щелчок на триггере с помощью Инструмента Нажатие переключают бит, хранящийся в триггере, если входы Асинхронный сброс/установка не фиксируют значение в данный момент.</p>

<h2>Поведение Инструмента Текст</h2>

<p>Позволяет редактировать привязанную к компоненту метку.</p>

<p><a href="../index.html">Назад к <em>Справке по библиотеке</em></a></p>

</body>
</html>
